#ifndef QMEDIAPLAYLIST_H
#define QMEDIAPLAYLIST_H

#include <QMediaPlayer>
#include <QUrl>
#include <QList>
#include <QRandomGenerator>
#include <QDebug>

// 播放模式枚举
enum class PlaybackMode {
    Sequential,  // 顺序播放
    Loop,        // 循环播放
    Random,      // 随机播放
    CurrentItemLoop // 单曲循环
};

// 自定义播放列表类
class QMediaPlaylist : public QObject {
    Q_OBJECT
public:
    explicit QMediaPlaylist(QObject *parent = nullptr);

    // 添加媒体文件
    void addMedia(const QUrl &url);

    // 设置播放模式
    void setPlaybackMode(PlaybackMode mode);

    // 获取下一个媒体文件
    QUrl next();

    // 获取上一个媒体文件
    QUrl previous();

    // 获取当前媒体文件
    QUrl currentMedia() const;

    void setCurrentIndex(int index);
    int getCurrentIndex() const;
    PlaybackMode playbackMode()const;
    void clear();
    void sendIndexAndMediaChanged(int index, QUrl url);

signals:
    // 播放模式改变信号
    void playbackModeChanged(PlaybackMode mode);
    // 当前索引改变信号
    void currentIndexChanged(int position);
    // 当前媒体改变信号
    void currentMediaChanged(const QUrl &content);

private:
    QList<QUrl> mediaList; // 媒体文件列表
    int currentIndex;      // 当前媒体索引
    PlaybackMode mode;     // 当前播放模式
};

#endif // QMEDIAPLAYLIST_H
